#include <head.h>

FILE *fp;

void timer_handler(int signum)
{
    time_t current_time;
    time(&current_time);
    struct tm *timeinfo = localtime(&current_time);
    fprintf(fp, "%d年 %d月 %d日 %d:%d:%02d\n",
            timeinfo->tm_year + 1900, timeinfo->tm_mon + 1, timeinfo->tm_mday, 
            timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
    fflush(fp); // 刷新文件缓冲区
}

int main(int argc, char const *argv[])
{
    fp = fopen("zy1.txt", "a");
    FOPEN_ERR(fp);

    struct sigaction sa;
    struct itimerval timer;

    // 设置信号处理函数
    memset(&sa, 0, sizeof(sa));
    sa.sa_handler = &timer_handler;
    sigaction(SIGALRM, &sa, NULL);

    // 设置定时器
    timer.it_value.tv_sec = 1;    // 第一次触发的时间
    timer.it_value.tv_usec = 0;
    timer.it_interval.tv_sec = 1; // 后续触发的时间间隔
    timer.it_interval.tv_usec = 0;

    setitimer(ITIMER_REAL, &timer, NULL);

    // 让程序保持运行
    while(1)
    {
        pause();
    }

    fclose(fp); // 关闭文件
    return 0;
}